草庐IT

c++ - WinAPI : Add style to combo box

全部标签

c++ - 这段代码有内存泄漏吗?

我有这个代码:inttim=10000;//somerandomnumbertm*now=localtime(&tim);printf("Dateis%d/%02d/%02d\n",now->tm_year+1900,now->tm_mon+1,now->tm_mday);printf("Timeis%02d:%02d\n",now->tm_hour,now->tm_min);我想知道它是否有内存泄漏的原因是localtime返回一个指向结构的指针,这意味着它分配内存。但没有人发布它。此代码是否存在内存泄漏? 最佳答案 您不必(也不

c++ - C和C++标准库的关系

此问题与编程或特定语言概念没有直接关系。我的问题是我们可以使用对C的引用吗?国际标准(例如C11)提供规范引用来描述C中的任何概念图书馆C++.更具体地说,在标题中在N3797::18.3.3[c.limits]中定义Clibrary标题进行了描述。但是C标准提供关于的更全面信息的内容而不是N3797工作草案。关于Clibrary的一切在C11中定义对于C++是正确的C++11中定义的实现的Clibrary或者我们不能依赖什么C标准规定? 最佳答案 对于C标准库,C++回退到C标准并且对于C++11它回到C99而不是C11,在C++

c++ - 在 C 项目中使用 Eigen

我正在做一个从Internet获得的C项目,我正在尝试向该项目添加一些涉及线性代数的函数。在我以前的C++工作中,我通常依赖Eigen来进行线性代数。有没有办法将Eigen用于C项目?如果是,我应该怎么做才能让它发挥作用?(仅仅添加Eigen头文件是不够的,因为例如标准C++文件不会自动包含在内) 最佳答案 Eigen是一个库,它大量使用C++中不存在的功能。因此,它不能直接从C翻译单元使用。但是,您可以将使用Eigen的部分包装在一个单独的共享库中,并公开一个C接口(interface)。这是一个如何编写这样一个库的小例子。图书馆

c++ - 为什么int/int = int?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭7年前。Improvethisquestion为什么当我除以两个整数时结果是整数而不是float,为什么选择这个设计决策?

c++ - 防止编译器不断折叠表达式的技巧

我的程序中有一个字符串文字,我正在尝试创建一个业余校验和以确保该字符串文字没有在可移植可执行文件中被替换。为此,我创建了字符串文字的散列,并将其作为整数文字存储在程序中。现在我有两个文字,一个用于字符串,一个用于散列。在我的代码中,我通过使用以相同方式散列字符串文字的函数来实现校验和,我创建了一个新的运行时散列并根据散列文字检查该散列。问题当然是,通过编译器优化,它可能会预先计算运行时哈希,然后我会根据哈希文字检查哈希文字,并且校验和将始终返回true。所以我正在寻找一种技巧,让编译器认为字符串文字是一个动态字符串,可以是任何东西,这样它就不会对运行时哈希进行常量折叠优化,并且我的代码

c++ - 为什么需要多维数组中更高维度的维度范围?

根据帖子,Passinga2DarraytoaC++functionintarray[10][10];voidpassFunc(inta[][10])//从编译器内部的角度来看,为什么需要这个更高的维度。 最佳答案 另一种解释(数组到指针衰减):假设我们有一个一维数组,我们这样使用它:intarray[10];inti=array[3];编译器必须知道在哪里可以找到array[3]。它知道它需要跳过3个int才能到达array[3]中的那个。所以它有效。但是如果我们有一个二维数组,intarray[2][5];inti=array[

c++ - 从 C 代码调用 C++ 方法

我已阅读以下文章here解释了如何从纯C代码调用基于C++的函数。这个方法最好用下面的例子来解释://C++code:classC{//...virtualdoublef(int);};extern"C"doublecall_C_f(C*p,inti)//wrapperfunction{returnp->f(i);}/*Ccode:*/doublecall_C_f(structC*p,inti);voidccc(structC*p,inti){doubled=call_C_f(p,i);/*...*/}但是,我不明白我是否应该在哪里定义一个由“p”指向的实例。请注意,在C代码中,它作为

c++ - 在连续的内存位置存储字符串文字

#include#includeintmain(){char*s[]={"cricket","tennis","football"};printf("Stringare:\n\n");printf("%s\n",*(s));printf("%s\n",*(s+1));printf("%s\n",*(s+2));printf("\n\n");printf("Startinglocationsofthestringare:\n\n");printf("%d\n",*(s));printf("%d\n",*(s+1));printf("%d\n",*(s+2));printf("\n\n")

c++ - 1亿节点大图的C++表示

我正在处理一个非常大的图,它有5亿个节点,节点的平均度为100。所以它是一种稀疏图。我还必须存储每条边的权重。我目前正在使用两个vector,如下所示//Vcouldbe100millionvector*AdjList=newvector[V];vector*Weight=newvector[V];使用vector的vector似乎不节省空间。它需要超过400GB的存储空间。有没有更好的节省空间的方法来将这个大图存储在内存中?有使用任何C++库的建议吗? 最佳答案 初步说明您可以考虑使用vector的vector而不是使用动态内存分

c++ - 检测对范围外变量的访问

Codelikethis是未定义的行为,因为它访问一个不再在范围内(其生命周期已结束)的局部变量。intmain(){int*a;{intb=42;a=&b;}printf("%d",*a);//UB!return0;}我的问题:是否有自动检测此类错误的好方法?它似乎应该是可检测的(当变量超出范围时将堆栈空间的一部分标记为不可用,然后如果该空间被访问则提示),但是Valgrind3.10、Clang4的AddressSanitizer和UndefinedBehaviorSanitizer,以及GCC6的AddressSanitizer和UndefinedBehaviorSanitize